package vista.capital;

import java.util.List;

import control.capital.ControladorCapitales;

import vista.HerramientasConsola;

import modelo.geografia.Capital;
import modelo.policiales.Policia;

public class VistaCapitalesDestinoConsola {

	private List<Capital> capitalesDestino;
	private ControladorCapitales controlCapitales;


	public VistaCapitalesDestinoConsola(Policia policia) {
		this.capitalesDestino = policia.getCapitalActual().getCapitalesConectadas();
		this.controlCapitales = new ControladorCapitales();
	}

	public int imprimirComoMenuNumerico() {
		
		StringBuilder menuNumerico = new StringBuilder();
		Integer opcion = 1;
		for(Capital capitalDestino: this.capitalesDestino)
		{
			menuNumerico.append(opcion.toString() + ") "+ capitalDestino.getNombre() + "\n");
			opcion ++;
		}
		HerramientasConsola.imprimir(menuNumerico.toString());
		HerramientasConsola.imprimir(opcion.toString() + ") Volver\n");
		return opcion;
	}

	public void verCapitalesDestino(Policia jugadorActual) {
		int opciones = this.imprimirComoMenuNumerico();
		HerramientasConsola.imprimir("Ingrese opcion de capital a viajar");
		
		String opcion = HerramientasConsola.pedirOpcionEntre(1, opciones);
		
		try {
			if(Integer.parseInt(opcion) != opciones)
				this.controlCapitales.realizarViaje(jugadorActual, this.capitalesDestino.get(Integer.valueOf(opcion)-1));
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void actualizarCapitalesDestino(Policia jugadorActual) {
		this.capitalesDestino = jugadorActual.getCapitalActual().getCapitalesConectadas();
	}

}
